package com.aaa.sys.service;

import com.aaa.sys.entity.Menu;
import com.aaa.common.vo.Page;
import com.aaa.sys.entity.TreeNode;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 菜单权限表(Menu)表服务接口
 *
 * @author makejava
 * @since 2023-06-20 09:08:46
 */
public interface MenuService {

    /**
     * 根据id查询权限
     * @param id
     * @return
     */
    Integer queryChildrenNumById(Integer id);

    /**
     * 查询所有权限
     * @return
     */
    List<TreeNode> queryAllTree();


    /**
     * 根据用户编号查询该用户拥有的权限
     * @param userId
     * @return
     */
    List<TreeNode> queryTreeDataByUserId(Integer userId);

    /**
     * 根据用户编号查询该用户拥有的按钮权限
     * @param userId
     * @return
     */
    List<String> queryButtonPermsByUserId(Integer userId);

    /**
     * 通过ID查询单条数据
     *
     * @param menuId 主键
     * @return 实例对象
     */
    Menu queryById(Integer menuId);

    /**
     * 分页查询
     *
     * @param page 筛选条件
     * @return 查询结果
     */
    PageInfo queryByPage(Page<Menu> page);

    /**
     * 新增数据
     *
     * @param menu 实例对象
     * @return 实例对象
     */
    Menu insert(Menu menu);

    /**
     * 修改数据
     *
     * @param menu 实例对象
     * @return 实例对象
     */
    Menu update(Menu menu);

    /**
     * 通过主键删除数据
     *
     * @param menuId 主键
     * @return 是否成功
     */
    boolean deleteById(Integer menuId);

}
